package com.lhj.xxsc.seckill.scheduled;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * @author 罗惠江
 * @version 1.0
 * @email 1511619294@qq.com
 * @date 2021/1/12 22:36
 * <p>
 * 定时任务
 * @EnableScheduling 开启定时器服务
 * @component 将定时器注入到容器中
 * @Scheduled 开启定时任务
 * 自动配置类 ： TaskSchedulingAutoConfiguration
 * <p>
 * 异步任务
 * @EnableAsync 开启异步任务功能
 * @Async 给异步任务上添加标注
 * 自动配置类 ： TaskExecutionAutoConfiguration
 * <p>
 * 让定时任务异步执行。
 * 异步任务
 * 解决：使用异步+定时任务来完成定时任务不阻塞的功能
 */
@Slf4j
@Component
public class HelloSchedule {
	/**
	 * 秒 分 时 日 月 周
	 * 周 一 : 1 以此类推
	 * spring 中只能有6 位 不支持 年。
	 * 默认是 阻塞的。。
	 * 1.解决办法，用异步方法执行业务。
	 * 2.支持定时任务线程池 设置：TaskSchedulingProperties
	 * spring.task.scheduling.pool.size=5 有bug 不一定生效。。。
	 * 3.让定时任务异步执行
	 * 异步任务！
	 */
//	@Async
//	@Scheduled(cron = "* * * * * ?")
//	public void hello() throws InterruptedException {
//		log.info("定时器启动了");
//		Thread.sleep(3000);
//	}
}
